home *** CD-ROM | disk | FTP | other *** search
-
- hlsl("
- #include <common_hlsl.h>
- #include <cardef.h>
-
- sampler2D sColor: register(s0);
- samplerCUBE sDiffuseCubemap: register(s1);
- samplerCUBE sCubemap: register(s2);
- // sampler2D sNormalmap: register(s3);
-
- static const float3 FlatNormal = float3(0.0f, 0.0f, 1.0f);
-
- struct PS_INPUT
- {
- HALF2 uvColor : TEXCOORD0;
- float3 E : TEXCOORD1;
- float3x3 tangentSpaceTranspose: TEXCOORD2;
- };
-
- HALF4 main( PS_INPUT input ): COLOR {
-
- // HALF3 Normalmap = tex2D( sNormalmap, input.uvColor )*2-1;
- HALF3 Normalmap = FlatNormal;
-
- HALF3 R = reflect( input.E, Normalmap );
- input.E = normalize( input.E );
-
- HALF3 uvwDiffuseCubemap = mul( -Normalmap, input.tangentSpaceTranspose);
- HALF3 uvwCubemap = mul( R, input.tangentSpaceTranspose);
-
- HALF Diffuse = texCUBE( sDiffuseCubemap, uvwDiffuseCubemap );
- HALF3 Cubemap = texCUBE( sCubemap, uvwCubemap);
- HALF Fresnel = fresnel( Normalmap, input.E, 2)*FRESNELSCALE;
-
- HALF4 Color = tex2D( sColor, input.uvColor );
-
- HALF CubemapMask = saturate(Color.a*2-1);
- HALF SpecularMask = saturate(Color.a*2);
- CubemapMask = saturate(CubemapMask+Fresnel*CubemapMask*16);
-
- return HALF4(Color.rgb*Diffuse+Cubemap*CubemapMask,0);
-
- }
-
- ")
-